Computed Properties হল Ember.js এর একটি শক্তিশালী বৈশিষ্ট্য, যা ডাইনামিকভাবে কোন প্রপার্টির মান নির্ধারণ করতে সাহায্য করে এবং সেই মানটি ক্যাশে করে রাখে। এটি সাধারণত কোনো একটি প্রপার্টির উপর নির্ভরশীল অন্যান্য প্রপার্টির মান গণনা করার জন্য ব্যবহৃত হয়। Computed Properties ডেটা ম্যানিপুলেশন বা ডাইনামিক আচরণ সংক্রান্ত লজিককে সহজ এবং পুনঃব্যবহারযোগ্য করে তোলে।
Ember.js তে Computed Properties এর জন্য একটি ক্যাশিং মেকানিজম রয়েছে, যার মাধ্যমে একই মান বারবার পুনঃক্যালকুলেট না করে প্রপার্টি একবারের জন্য হিসাব করে সেই মান সংরক্ষণ করা হয় যতক্ষণ না নির্ভরশীল কোন প্রপার্টি পরিবর্তিত না হয়। এটি অ্যাপ্লিকেশন পারফরম্যান্সে উন্নতি ঘটায় কারণ একই প্রপার্টির মান পুনরায় গণনা করা থেকে বিরত রাখা হয়।
Computed Properties কী?
Computed Properties হল প্রপার্টি যা নির্দিষ্ট অন্যান্য প্রপার্টির মানের উপর নির্ভর করে। এই প্রপার্টি বিশেষভাবে গঠন করা হয় যাতে যখন নির্ভরশীল প্রপার্টিগুলি পরিবর্তিত হয়, তখন সেই পরিবর্তনগুলির ভিত্তিতে গননা বা ফলাফল পুনরায় হিসাব করা হয়।
Ember.computed ফাংশনটি ব্যবহার করে আপনি computed property তৈরি করতে পারেন।
import EmberObject, { computed } from '@ember/object';
let person = EmberObject.create({
firstName: 'John',
lastName: 'Doe',
fullName: computed('firstName', 'lastName', function() {
return `${this.firstName} ${this.lastName}`;
})
});
এখানে, fullName একটি computed property যা firstName এবং lastName প্রপার্টির মানের উপর ভিত্তি করে রেন্ডার হবে। যখনই firstName বা lastName পরিবর্তিত হবে, তখন fullName স্বয়ংক্রিয়ভাবে আপডেট হবে।
Computed Properties এর Caching Behavior
Ember.js তে computed properties একটি অত্যন্ত গুরুত্বপূর্ণ caching mechanism ব্যবহার করে যা তাদের পারফরম্যান্স উন্নত করে। যখন একটি computed property তৈরি করা হয়, তখন প্রথমবার সেটি গণনা করা হয় এবং তারপর এটি ক্যাশে করা হয়। পরবর্তীতে যদি সেই প্রপার্টির নির্ভরশীল মান না পরিবর্তিত হয়, তাহলে আগের ক্যাশড মানটি পুনরায় ব্যবহার করা হয়, এবং গণনা আবার করা হয় না।
ক্যাশিং এর উপকারিতা:
- পারফরম্যান্স উন্নতি: যখন কোনও প্রপার্টির মান পরিবর্তন না হয়, তখন আগের ফলাফল ব্যবহার করা হয়, যা অপ্রয়োজনীয় গণনা এড়িয়ে যায়।
- ডেটার একঘেয়ে আপডেট: যতক্ষণ না নির্ভরশীল প্রপার্টি পরিবর্তিত হয়, computed property গুলির মান একই থাকে।
Caching Behavior কিভাবে কাজ করে?
- প্রথমবার গণনা: প্রথমবার যখন computed property মূল্যায়ন করা হয়, তখন তা নির্ভরশীল প্রপার্টি থেকে ডেটা নিয়ে হিসাব করা হয় এবং ক্যাশে করে রাখা হয়।
- ক্যাশে হওয়া মান: পরবর্তীতে যদি সেই প্রপার্টি পুনরায় অ্যাক্সেস করা হয় এবং নির্ভরশীল প্রপার্টি অপরিবর্তিত থাকে, তবে আগের ক্যাশড মান সরবরাহ করা হয়।
- নির্ভরশীল প্রপার্টির পরিবর্তন: যদি নির্ভরশীল প্রপার্টির কোন মান পরিবর্তিত হয়, তবে computed property পুনরায় গণনা করা হয় এবং ক্যাশে আপডেট করা হয়।
Computed Properties এর Caching Behavior উদাহরণ
ধরা যাক, একটি অ্যাপ্লিকেশনে একটি computed property রয়েছে যেটি দুটি প্রপার্টি firstName এবং lastName এর উপর ভিত্তি করে fullName তৈরি করে।
import EmberObject, { computed } from '@ember/object';
let person = EmberObject.create({
firstName: 'John',
lastName: 'Doe',
fullName: computed('firstName', 'lastName', function() {
console.log('fullName calculated');
return `${this.firstName} ${this.lastName}`;
})
});
console.log(person.fullName); // "fullName calculated" log হবে এবং "John Doe" রিটার্ন করবে
console.log(person.fullName); // এবার কোনো "fullName calculated" log হবে না, "John Doe" রিটার্ন করবে
এখানে, firstName এবং lastName প্রপার্টির মানে কোনো পরিবর্তন না হলে, fullName প্রথমবার গণনা হওয়ার পর ক্যাশে হয়ে যায় এবং পরবর্তীতে একই মান প্রদর্শিত হয়। console.log('fullName calculated') শুধুমাত্র প্রথমবারই দেখা যাবে।
Computed Properties এর Cache ম্যানেজমেন্ট
Ember.js এর computed properties এর জন্য একটি স্মার্ট ক্যাশিং ব্যবস্থা রয়েছে, যা ডেটার অ্যাক্সেস গতিশীল এবং কার্যকরী রাখে। তবে, কিছু বিশেষ পরিস্থিতিতে আপনি ক্যাশিং আচরণ কাস্টমাইজ করতে চাইতে পারেন।
cacheable এবং volatile Computed Properties
- Volatile Computed Properties: যদি আপনি চান যে কোনো একটি
computed propertyপ্রতিবারই গণনা হোক, তাহলে আপনিvolatile()ব্যবহার করতে পারেন, যাতে ক্যাশিং বন্ধ হয় এবং প্রত্যেকবারই এটি পুনরায় গণনা হয়।
import EmberObject, { computed } from '@ember/object';
let person = EmberObject.create({
firstName: 'John',
lastName: 'Doe',
fullName: computed('firstName', 'lastName', function() {
console.log('fullName recalculated');
return `${this.firstName} ${this.lastName}`;
}).volatile()
});
console.log(person.fullName); // "fullName recalculated" log হবে এবং "John Doe" রিটার্ন করবে
console.log(person.fullName); // "fullName recalculated" log হবে এবং "John Doe" রিটার্ন করবে
এখানে, volatile() ব্যবহার করে fullName কে ক্যাশ না করার জন্য বলেছি। ফলে, প্রতিবার এটি রিফ্রেশ হবে।
Computed Properties হল Ember.js অ্যাপ্লিকেশনের একটি অত্যন্ত শক্তিশালী বৈশিষ্ট্য যা caching ব্যবস্থার মাধ্যমে আপনার অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করতে সাহায্য করে। এটি নির্ভরশীল প্রপার্টির পরিবর্তন অনুসারে ডেটা রেন্ডার করতে সক্ষম এবং প্রয়োজন অনুযায়ী volatile পদ্ধতি ব্যবহার করে ক্যাশিং আচরণ নিয়ন্ত্রণ করা যায়। Computed Properties Ember.js এ ডেটার সাথে সহজে ইন্টারঅ্যাকশন এবং ফ্লুয়েন্ট ইউজার ইন্টারফেস তৈরি করতে সহায়ক।
Read more